<!DOCTYPE html>
<html lang="en-US" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>Docker的作用，到底解决了什么痛点? | ChNotes</title>
    <meta name="description" content="本文探讨了Docker的作用和它在解决现代软件开发中的痛点方面的重要性。了解Docker如何提供轻量级、可移植和可扩展的容器化解决方案，简化了应用程序的部署、管理和跨环境移植。">
    <meta name="generator" content="VitePress v1.0.0-rc.44">
    <link rel="preload stylesheet" href="/notes/assets/style.Bl7lAUC5.css" as="style">
    
    <script type="module" src="/notes/assets/app.x1LP96A3.js"></script>
    <link rel="modulepreload" href="/notes/assets/chunks/framework.DraUm12O.js">
    <link rel="modulepreload" href="/notes/assets/chunks/theme.DWx7b8qq.js">
    <link rel="modulepreload" href="/notes/assets/docker_1.md.CByY6n1b.lean.js">
    <link rel="icon" type="image/svg+xml" href="/notes/logo.png">
    <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
    <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
    <meta name="keywords" content="Docker,容器化,跨环境移植,运维">
  </head>
  <body>
    <div id="app"><div class="layout-root-wrapper flex-col" data-v-295ffa92><header class="header-root flex-row" data-v-295ffa92 data-v-416e8eae><a class="VPLink link flex-row space-row-small" href="/notes/" data-v-416e8eae><!--[--><img class="m-logo-large" src="/notes/logo.png" data-v-416e8eae><div class="title" data-v-416e8eae>ChNotes</div><!--]--></a><div class="VPNavBarSearch flex-1" data-v-416e8eae><!--[--><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!----><!--]--></div><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" data-v-416e8eae data-v-19a132e8 data-v-3e689ed0><span class="check" data-v-3e689ed0><span class="icon" data-v-3e689ed0><!--[--><span class="vpi-sun sun" data-v-19a132e8></span><span class="vpi-moon moon" data-v-19a132e8></span><!--]--></span></span></button></header><main class="flex-1 w-full" data-v-295ffa92><div class="home-root flex-row flex-start h-full" data-v-295ffa92 data-v-cd7dd6b2><div class="el-col el-col-24 el-col-xs-24 el-col-sm-18 el-col-sm-offset-1 el-col-md-16 el-col-md-offset-3 content-wrapper m-container-large" style="" data-v-cd7dd6b2><!--[--><div class="page-info-wrap flex-col" data-v-cd7dd6b2><h1 class="doc-title" data-v-cd7dd6b2>Docker的作用，到底解决了什么痛点? | ChNotes</h1><span class="datetime" data-v-cd7dd6b2>更新于：2024-03-01 17:31</span></div><div style="position:relative;" class="vp-doc" data-v-cd7dd6b2><div><h1 id="_1-移植性-一次构建到处使用" tabindex="-1">1. 移植性, 一次构建到处使用 <a class="header-anchor" href="#_1-移植性-一次构建到处使用" aria-label="Permalink to &quot;1. 移植性, 一次构建到处使用&quot;">​</a></h1><p>假如有一个服务器a运行了很多项目(node、java、php、mysql)。有一天需要使用新的服务器b。</p><p>那么服务器a上的所有运行的项目都得迁移到服务器b上，那么需要给服务器b搭建各种运行环境，工作量耗时耗力。</p><p>使用docker将所以的项目以及运行环境进行镜像构建，只需要在另一个服务器上安装一个docker，并下载对应之前构建好的镜像，就能快速搭建出对应的运行环境，并将项目运行起来。</p><h1 id="_2-隔离性-不同的容器之间相互独立-互不干扰" tabindex="-1">2. 隔离性, 不同的容器之间相互独立，互不干扰 <a class="header-anchor" href="#_2-隔离性-不同的容器之间相互独立-互不干扰" aria-label="Permalink to &quot;2. 隔离性, 不同的容器之间相互独立，互不干扰&quot;">​</a></h1><p>Docker通过namespace实现隔离的，namespace是Linux提供的资源隔离机制，负责隔离进程。只有在同一个namespace下的进程可以相互联系，但无法感受到外部进程的存在，营造出处于一个独立的系统环境中的错觉。</p><p>因为namespace不管再怎么隔离，但是容器内部执行任务都依赖同一个cpu、内存等。为了防止容器过度占用或影响其他容器或宿主机，需要限制容器使用的 CPU 核心数量、内存大小，或者设置容器的网络带宽限制，以确保容器之间的资源使用互不干扰。因此使用了控制组（Control Groups，简称cgroups）是一个 Linux 内核特性，它可以为进程或进程组分配资源，并限制其资源使用量，确保系统的资源公平分配和高效利用。</p><h1 id="_3-轻量-docker是一种虚拟化容器技术。" tabindex="-1">3. 轻量, docker是一种虚拟化容器技术。 <a class="header-anchor" href="#_3-轻量-docker是一种虚拟化容器技术。" aria-label="Permalink to &quot;3. 轻量, docker是一种虚拟化容器技术。&quot;">​</a></h1><p>他和虚拟机最根本的区别是：<strong>docker容器和宿主机共用</strong>操作系统<strong>内核，不会在宿主机上再次安装操作系统</strong>，更加节省资源。</p><h1 id="_4-启动快" tabindex="-1">4. 启动快 <a class="header-anchor" href="#_4-启动快" aria-label="Permalink to &quot;4. 启动快&quot;">​</a></h1><p>docker采用了一种镜像分层模型，通过这种模型可以实现镜像之间的共享和重用，启动容器时无需加载整个镜像层，所以启动会更快。</p></div></div><!--]--></div><div class="el-col el-col-24 el-col-xs-0 el-col-sm-5" style="" data-v-cd7dd6b2><!--[--><div class="el-col el-col-24 el-col-sm-5 aside-wrapper w-full scroll-col" style="height:calc(100vh - var(--m-layout-content-margin) - undefinedpx);" data-v-cd7dd6b2><!--[--><aside class="aside-root space-col" data-v-cd7dd6b2 data-v-cc4dd1af><div class="author-root m-container w-full flex-col space-col" data-v-cc4dd1af data-v-2c50961c><div class="author-info flex-row space-row" data-v-2c50961c><img class="m-logo-large flex-shrink-0" src="/notes/author.jpg" data-v-2c50961c><div class="info flex-col flex-start" data-v-2c50961c><h3 data-v-2c50961c>CH</h3><p data-v-2c50961c>一个热爱编程的程序员</p></div></div><div class="data-info w-full flex-row flex-around" data-v-2c50961c><div class="article-num flex-col" data-v-2c50961c><span class="num" data-v-2c50961c>2</span><span class="text" data-v-2c50961c>文章</span></div><div class="star-num flex-col" data-v-2c50961c><span class="num" data-v-2c50961c>305</span><span class="text" data-v-2c50961c>浏览量</span></div></div></div><div class="VPDocAsideOutline m-container" role="navigation" data-v-cc4dd1af data-v-0c455fed><div class="content" data-v-0c455fed><div class="outline-title" role="heading" aria-level="2" data-v-0c455fed>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-0c455fed><ul class="VPDocOutlineItem root" data-v-0c455fed data-v-19cf7dc4><!--[--><!--]--></ul></nav><div class="outline-marker" data-v-0c455fed></div></div></div></aside><!--]--></div><!--]--></div></div></main></div></div>
    <script>window.__VP_HASH_MAP__=JSON.parse("{\"docker_1.md\":\"CByY6n1b\",\"index.md\":\"BnTd3hVT\",\"css_1.md\":\"CP8zBdG8\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"ChNotes\",\"description\":\"A VitePress site\",\"base\":\"/notes/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"/notes/logo.png\",\"search\":{\"provider\":\"local\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
    
  </body>
</html>